import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts

# 导入数据
data = pd.read_excel('第二章 图表(前15).xlsx',sheet_name='5 层叠柱形图',usecols='B:D',skiprows=1)

# 数据准备
categories = data['季度'].tolist()
values1 = data['销售额'].tolist()
values2 = data['利润额'].tolist()

# 创建柱状图
bar = (
    Bar(init_opts=opts.InitOpts(bg_color='#00002d'))
    .add_xaxis(categories)  # 设置 x 轴数据
    .add_yaxis("销售额", values1, gap='-30%', color='blue')
    .add_yaxis("利润额", values2, gap='-30%', color='red')
    .set_global_opts(
        # 设置标题
        title_opts=opts.TitleOpts(
            title="2021年至今季度销售额（万）和利润额（万）",
            title_textstyle_opts=opts.TextStyleOpts(color="white", font_size=24),
            subtitle="2022年第二季度销售额首次出现下降，降幅达到15%",
            subtitle_textstyle_opts=opts.TextStyleOpts(color="white", font_size=16)
        ),
        # 设置交互按钮
        legend_opts=opts.LegendOpts(
            is_show=True,
            textstyle_opts=opts.TextStyleOpts(color="white"),
            pos_right="0%",
            pos_top="5%"
        ),
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
        xaxis_opts=opts.AxisOpts(
            axisline_opts=opts.AxisLineOpts(is_show=True),  #  X 轴线
            axislabel_opts=opts.LabelOpts(is_show=True, color='white'),    #  X 轴标签
            splitline_opts=opts.SplitLineOpts(is_show=False) #  X 轴网格线
        ),
        yaxis_opts=opts.AxisOpts(
            axisline_opts=opts.AxisLineOpts(is_show=False),  #  Y 轴线
            axislabel_opts=opts.LabelOpts(is_show=False),    #  Y 轴标签
            splitline_opts=opts.SplitLineOpts(is_show=False) #  Y 轴网格线
        )
    )
    .set_series_opts(
        label_opts=opts.LabelOpts(
            is_show=True,
            position='top',
            color='white')  # 显示数据
    )
)

# 导出交互的 HTML 文件
bar.render("D:/python charm/01/可视化/第二章前15/图片/层叠柱形图.html")